// 关键词
namespace KeyWordSpace
{
    class KeyWord
    {

        #region var 类型推断

        // var只能用于局部变量声明，不能用于字段、属性或方法的返回类型。
        // var必须在声明的同时进行初始化，因为编译器需要初始化表达式来推断类型。
        // var不会改变变量的作用域或生命周期，它仅仅是类型推断的一种方式。
        // 使用var时，如果初始化表达式的类型在编译时不能确定，会导致编译错误。
        // var关键字可以使代码更简洁，但前提是编译器能够正确推断出变量的类型。在类型不明显或不易读的情况下，显式指定类型可能更合适。
        var number = 123; // 推断为int类型
        var name = "Alice"; // 推断为string类型
        var isDone = true; // 推断为bool类型
        var list = new List<int> { 1, 2, 3 }; // 推断为List<int>类型
        var dict = new Dictionary<string, int> { { "apple", 1 }, { "banana", 2 } }; // 推断为Dictionary<string, int>类型
        var numbers = new List<int> { 1, 2, 3, 4, 5 };
        foreach (var number in numbers)
        {
            Console.WriteLine(number); // 推断为int类型
        }
        var anonymousType = new { Name = "Bob", Age = 30 };
        Console.WriteLine($"Name: {anonymousType.Name}, Age: {anonymousType.Age}");
        #endregion

        #region 
        // partial: 关键字用于将一个类的定义拆分成多个文件
        public partial class Person
        {
            private string _name;
            public void Test()
            {

            }
        }
        public partial class Person
        {
            public void Test(string name)
            {
                // _name
            }
        }
        #endregion
        #region sealed:用于限制类的继承或方法的重写。
        public class BaseClass
        {
            // 声明一个虚方法
            public virtual void MyMethod()
            {
                // 基类方法的实现
            }
        }

        public class DerivedClass : BaseClass
        {
            // 在派生类中重写并密封该方法
            public sealed override void MyMethod()
            {
                // 派生类方法的实现，这里的方法实现在派生类中不能被进一步重写
            }
        }
        #endregion
    }
}